package com.example.mvvmkotlin.mvvm

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.databinding.DataBindingUtil
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import com.example.mvvmkotlin.R
import com.example.mvvmkotlin.databinding.ActivityMvvmmainBinding


class MVVMMainActivity : AppCompatActivity() {
    private lateinit var  binding: ActivityMvvmmainBinding
    private lateinit var mainViewModel: LoginViewModel
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_mvvmmain)
        binding = DataBindingUtil.setContentView(this, R.layout.activity_mvvmmain)
        //之所以要这么写，是因为ViewModel 有其独立的生命周期，并且其生命周期要长于Activity 。
        //如果我们在onCreate()方法中创建ViewModel 的实例，那么每次onCreate()方法执行的时
        //候，ViewModel 都会创建一个新的实例，这样当手机屏幕发生旋转的时候，就无法保留其中的
        //数据了。
        mainViewModel = ViewModelProvider(this).get(LoginViewModel::class.java)
        binding.viewModel = mainViewModel
        binding.lifecycleOwner = this
        lifecycle.addObserver(MainObserver())
        //LiveData的使用 只有在当前Activity可见时才会触发监听，减少性能消耗
        mainViewModel.count.observe(this, Observer {
            binding.tvCount.text = it.toString()
        })
    }
}